In the channel coding module of a communication chain, an error correction code, for example an LDPC (“Low Density Parity Check”) code, can be used to improve the signal transmission quality. In general, the noise generated by the transmission channel of a communication system is of Gaussian type. In the case of magnetic recording systems, such as hard disks, the magnetic transmission channel delivers noisy information blocks with a large correlation factor. This large correlation factor is mainly due to the interference caused by the physical proximity between the information items written to the hard disk, and the data reading speed. The consequence of this interference is to render the information dependent on the previous information; this is why one speaks of correlated information.
The noise generated by the transmission channel can be modelled on the basis of finite impulse response (FIR) filters by a convolution encoder. On reception, channel decoding operations are performed. Knowing the noise generated by the transmission channel, it is possible to decorrelate the information with the aid of decorrelation circuitry or devices. This decorrelation, which can be performed with a conventional algorithm of the VITERBI type, forms part of the channel decoding. Moreover, the channel decoding comprises a decoding of the blocks encoded with the error correction code to recover the symbols written on the disk.
As indicated above, an exemplary error correction code is a block-based code, such as, for example, the block-based codes whose parity matrix exhibits a low density, that is to say, comprises a low number of 1s. Such codes are better known to the person skilled in the art by the name “LDPC codes” (“Low Density Parity Check”).
The LDPC code is a block-based code, and the encoder processes blocks of K bits and delivers blocks of N bits. Thus, N-K redundancy bits are added. These N-K bits are called “parity bits”. The coding rate (or “code rate”) is defined by the ratio K/N. The lower the coding rate, the higher the number of redundancy bits, and thus the greater the protection against the noise of the transmission channel.
These N-K bits are calculated with the aid of a parity matrix H. This matrix has N-K rows and N columns and includes “1s” and “0s” with a low number of “1s” relative to the number of “0s”. This is the reason why codes of this type, based on such a matrix, are dubbed “LDPC codes”, that is to say low density codes. The encoded block C, of N bits, is calculated by solving the equation H·CT=0, where H denotes the parity matrix, and T the “transpose” function.
On the decoder side, the correction of the erroneous bits is performed on the basis of the relations between the coded information items of the block. These relations are given by the parity matrix H. The decoder uses internal metrics corresponding to the “1s” of the matrix H. The matrix H corresponds to the Tanner graph of the LDPC code comprising so-called check nodes and information nodes (or “bit nodes”) linked together by the path of the graphs that are representative of the messages iteratively exchanged between the nodes thus linked. These metrics are updated row-wise (updating of the check nodes) taking into account the internal metrics of one and the same row. Thereafter, the decoder updates these metrics column-wise (updating of the information nodes) taking into account the internal metrics on one and the same column as well as the corresponding information input to the decoder and originating from the transmission channel. An iteration corresponds to the updating of the check nodes for all the internal metrics, followed by the updating of the information nodes for all the internal metrics.
The decoding of a block involves several iterations. The values, also called “hard decisions,” of the decoded bits are obtained by adding the internal metrics column-wise with the information received and by taking the sign of the result. This result is also denoted by the term “soft decision” or “LLR” (Log Likelihood Ratio). The sign of the result provides the “0” or “1” value of the bit (“hard decision”) while the absolute value of the result gives a confidence indication (probability) for this “0” or “1” logic value.
Codes of the LDPC type are beneficial since they make it possible to obtain a very low bit error rate (BER), because of the iterative character of the decoding algorithm. Several iterative decoding algorithms exist for decoding LDPC codes. Mention may in particular be made of the conventional so-called “belief propagation” (BP) algorithm, well known to the person skilled in the art.
The duration of decoding of a block is directly related to the number of iterations. Thus, to achieve a given throughput, a maximum number of iterations is defined for each coding rate and each block may be decoded with this maximum number of iterations. For example, the maximum number of iterations can be fixed at 50. That said, if the decoding has not converged after these 50 iterations, then this results in a decrease in the decoding performance.
As indicated above, the decorrelation of the information of a block can be performed with the aid of decorrelation means, circuitry, or devices such as a Viterbi decoder. This decoder based on a Viterbi algorithm makes it possible to decode an information block coded on the basis of an error correction based on a convolution code.
It is possible to use a SOVA (Soft Output Viterbi Algorithm) decoder which is a variant of the conventional Viterbi algorithm which is generally implemented as an algorithm with two steps, with a Viterbi algorithm part and a part concerning itself with calculating the probabilities (soft-output). The first step of a SOVA is to select the most probable sequence making it possible to pass through a single node of a trellis at each instant. Each node possessing at least two branches converging on the node, one of them being chosen in the said sequence, the difference between the value carried on each branch indicates the error rate of each choice. The value thus carried on each branch, also called the branch metric, is accumulated throughout the calculations so as to indicate the probability of confidence of the value of the decoded bit (hard decision).
In a general case where a SOVA decoder and an LDPC decoder are used to perform the channel decoding, it is possible to carry out a few external iterations corresponding to a “SOVA decoder—LDPC decoder” loop iteration and about B LDPC decoder iterations for each external iteration to obtain a satisfactory correction capability.
Moreover, the disks require a high transmission throughput, of the order of 4 Gbits/s. In order to obtain such a throughput, a known solution consists in running the external loop by effecting a series coupling of several SOVA decoders and of several LDPC decoders.
The decoders being designed on an imperfect channel model, it is helpful to increase the number of external iterations to improve the quality of the decoding. The corrections afforded by one type of decoder do indeed make it possible to improve the correction performed by the other type of decoder. For this purpose, one of the approaches includes increasing the number of SOVA decoders and LDPC decoders. Otherwise it is helpful to decrease the transmission throughput. Moreover, it has been noted that it is preferable to have a bigger number of external iterations even if the number of LDPC iterations is decreased accordingly.
According to one mode of implementation and embodiment, it is proposed that decorrelation circuitry, such as SOVA decoders, and error correction code decoding circuitry, such as an LDPC decoder, be coupled so as to carry out an LDPC decoding of a group of information items of a block followed by a decorrelation with the aid of a plurality of SOVA decoders of at least part of the data thus decoded before carrying out an LDPC decoding of a new group of information items of the same block. This new decoder thus effected by merging an LDPC decoder with a plurality of SOVA decoders in parallel makes it possible to increase the number of iterations regarded as external iterations, given that the new decoder can be considered to be a single LDPC decoder whose channel information is updated during the LDPC decoding, thus making it possible to increase the decoding performance while preserving a smaller area of occupancy than in the case of using several LDPC decoders and several SOVA decoders.